/*
题目：种花问题
假设有一个很长的花坛，一部分地块种植了花，另一部分却没有。可是，花不能种植在相邻的地块上，它们会争夺水源，两者都会死去。

给你一个整数数组  flowerbed 表示花坛，由若干 0 和 1 组成，其中 0 表示没种植花，1 表示种植了花。另有一个数 n ，
能否在不打破种植规则的情况下种入 n 朵花？能则返回 true ，不能则返回 false。
 */
public class CanPlaceFlowers {
    public boolean canPlaceFlowers(int[] flowerbed, int n) {
        int[] flowers = new int[flowerbed.length + 2];  //数组左边界和有边界多加一个0
        int i = 1;
        int len = flowerbed.length + 2;
        for (int val :flowerbed) {
            flowers[i++] = val;
        }
        i = 1;
        while (n != 0 && i < len - 1) {
            if (flowers[i] != 1 && flowers[i - 1] == flowers[i + 1]
                    && flowers[i - 1] == 0) {
                n--;
                flowers[i]++;
            }
            i++;
        }
        if (n > 0) {
            return false;
        }
        return true;
    }
}
